import java.util.*;
/**
 * Class Room - a room in an adventure game.
 *
 * This class is part of the "World of Zuul" application. 
 * "World of Zuul" is a very simple, text based adventure game.  
 *
 * A "Room" represents one location in the scenery of the game.  It is 
 * connected to other rooms via exits.  The exits are labelled north, 
 * east, south, west.  For each direction, the room stores a reference
 * to the neighboring room, or null if there is no exit in that direction.
 * 
 * @author  Michael Kölling and David J. Barnes
 * @version 2016.02.29
 */
public class Room 
{
    private String description;
    private HashMap<String, Room> rooms = new HashMap<>();
    private HashMap<String, Thing> foods = new HashMap<>();

    /**
     * Create a room described "description". Initially, it has
     * no exits. "description" is something like "a kitchen" or
     * "an open court yard".
     * @param description The room's description.
     */
    public Room(String description) 
    {
        this.description = description;
    }
    
    public void setThing(Thing food) {
        if (foods.get(food.getName()) == null) {
            this.foods.put(food.getName(), food);
        }
    }
    
    public Thing getThing(String name) {
        return foods.get(name);
    }
    
    public void removeThing(String name) {
        Thing f = foods.remove(name);
        if( f == null) {
            System.out.println("这个房间没有食物 " + name);
        }
    }
    
    public void checkThing() {
        if (!foods.isEmpty()) {
            System.out.print("这个地方有："); 
            for (String name : foods.keySet()) {
                System.out.print(name + " ");
            }
            //System.out.print(foods);
            System.out.println();
        }
        else {
            System.out.println("这个地方没有东西。");
        }
    }
    
    /**
     * Define the exits of this room.  Every direction either leads
     * to another room or is null (no exit there).
     * @param north The north exit.
     * @param east The east east.
     * @param south The south exit.
     * @param west The west exit.
     */

    public void setExit(String direction, Room room) {
        this.rooms.put(direction, room);
    }
    
    public void printExits() {
        System.out.print("Exits: ");
        for (String str : rooms.keySet()) {
            System.out.print(str + " ");
        }
        //currentRoom.checkFood();
        System.out.println();
    }
    
    public Room goNext(String direction) {
        return this.rooms.get(direction);
    }
    
    public Thing getCurrentFood(String name, Thing food) {
        return this.foods.get(name);
    }
    
    /**
     * @return The description of the room.
     */
    public String getDescription()
    {
        return description;
    }
    
    public String getRoomKey(HashMap<String,Room> map,Room value) {
        String key = null;         //Map,HashMap并没有实现Iteratable接口.不能用于增强for循环.
        for(String getKey: map.keySet()){
            if(map.get(getKey).equals(value)){
                 key = getKey;
            }
        }
        return key;
        //这个key肯定是最后一个满足该条件的key.
    }
    
    public boolean isWin(Room name) {
        if(getRoomKey(rooms, name) == "outside") {
            return true;
        }
        else {
            return false;
        }
        
    }
    
    
}
